#ifndef ISING_H
#define ISING_H

#include "utils.h"

class ising 
{
	private:
		void flip_site (uint32);
		int spin_count (uint32, uint8);
		double get_energy (uint32, uint8);
		void random_update ();
		int check_parity (int);
		void checkerboard_update (int);
		void step (ising);
		void update (uint8);

	public:
		uint8 * lat, dim;
		uint32 len, n_sites;
		double h, j, t;
		int n_parity;

		ising (uint32, uint8, double, double, double);
		~ising ();
		
		// External interfaces
		void print_lattice ();
		void swap_mag_field ();
		void step (int);
};

#endif // ISING_H
